//标签的标签名  如<div>的标签名是   div，<svg:name>的标签名是svg:name,
//其中标签的名字可以是大小写字母，_,-,.
const ncname = '[a-zA-Z_][\\w\\-\\.]*';
const tagNameCapture=`((?:${ncname}:)?(${ncname}))`;
//开始标签,只包含<+标签名
const startTagOpenRE=new RegExp(`<${tagNameCapture}`);
//标签的后面>或者/>
const startTagCloseRe = /^\s*(\/?)>/
/**
 * 单个属性的标识符
 */
const singleAttrIdentifier=/[^\s"'<>/=]/;
/**
 * 属性中间的等于号，不进行捕捉
 */
const singleAttrAssign=/(?:=)/;
/**
 * 属性的值，可以是双引号，单引号，以及不带引号的组成
 */
const singleAttrValues = [
  /"([^"]*)"/.source,
  /'([^']*)'/.source,
  /([^\s"'=<>`]+)/.source
];
// const attribute = new RegExp(
//   '^\\s*' + singleAttrIdentifier.source +
//   '(?:\\s*(' + singleAttrAssign.source + ')' +
//   '\\s*(?:' + singleAttrValues.join('|') + '))?'
// )
const attributeRe=new RegExp(`^\\s*(${singleAttrIdentifier.source}*)(?:\\s*(${singleAttrAssign.source})\\s*(?:${singleAttrValues.join('|')}))?`);
const  endTagRe=new RegExp(`^</\\s*${tagNameCapture}[^>]*>`);
console.log(endTagRe.source)
export {startTagOpenRE,attributeRe,startTagCloseRe,endTagRe}